/*-------------------------------------------------------------------------
 *
 * pg_replication_origin.h
 *	  "复制来源" 系统目录的定义 (pg_replication_origin)
 *
 * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
 * Portions Copyright (c) 1994, Regents of the University of California
 *
 * src/include/catalog/pg_replication_origin.h
 *
 * NOTES
 *	  Catalog.pm 模块读取此文件并推导模式信息。
 *
 *-------------------------------------------------------------------------
 */
#ifndef PG_REPLICATION_ORIGIN_H
#define PG_REPLICATION_ORIGIN_H

#include "access/xlogdefs.h"
#include "catalog/genbki.h"
#include "catalog/pg_replication_origin_d.h"

/* ----------------
 *		pg_replication_origin.  cpp 将其转换为
 *		typedef struct FormData_pg_replication_origin
 * ----------------
 */
CATALOG(pg_replication_origin,6000,ReplicationOriginRelationId) BKI_SHARED_RELATION
{
	/*
	 * 在本地已知的 ID，包含在 WAL 中。
	 *
	 * 这永远不应该离开系统。
	 *
	 * 需要适应 uint16，因此我们不会在 WAL
	 * 记录中浪费太多空间。出于这个原因，我们不在这里使用普通的 Oid 列，因为
	 * 我们需要手动处理新值的分配。
	 */
	Oid			roident;

	/*
	 * 可变长度字段从这里开始，但我们允许直接访问
	 * roname。
	 */

	/* 外部、自由格式、名称 */
	text		roname BKI_FORCE_NOT_NULL;

#ifdef CATALOG_VARLEN			/* 进一步的可变长度字段 */
#endif
} FormData_pg_replication_origin;

typedef FormData_pg_replication_origin *Form_pg_replication_origin;

DECLARE_TOAST_WITH_MACRO(pg_replication_origin, 4181, 4182, PgReplicationOriginToastTable, PgReplicationOriginToastIndex);

DECLARE_UNIQUE_INDEX_PKEY(pg_replication_origin_roiident_index, 6001, ReplicationOriginIdentIndex, on pg_replication_origin using btree(roident oid_ops));
DECLARE_UNIQUE_INDEX(pg_replication_origin_roname_index, 6002, ReplicationOriginNameIndex, on pg_replication_origin using btree(roname text_ops));

#endif							/* PG_REPLICATION_ORIGIN_H */
